/*
  将下面异步代码使用 Promise 的方法改进
  尽量用看上去像同步代码的方式
  setTimeout(function () {
    var a = 'hello'
    setTimeout(function () {
      var b = 'lagou'
      setTimeout(function () {
        var c = 'I ♥ U'
        console.log(a + b +c)
      }, 10)
    }, 10)
  }, 10)
*/

function getName(val) {
  return new Promise((resolve, reject) => {
    resolve(val);
  });
}

//方法一，使用基本的pormise
getName("hello")
  .then((val) => {
    return val;
  })
  .then((val) => {
    return getName(val + "lagou");
  })
  .then((val) => {
    return getName(val + "I ♥ U");
  })
  .then((val) => {
    console.log(val);
  })
  .catch((reason) => {
    console.log(reason);
  });

//方法二，使用Pormise.all按顺序返回
Promise.all([getName("hello"), getName("lagou"), getName("I ♥ U")]).then(
  (val) => {
    console.log(val[0] + val[1], val[2]);
  }
);
